<?php

namespace Condistelec\MainBundle\Controller;

use Condistelec\MainBundle\Entity\Usuario;
use Condistelec\MainBundle\Entity\Perfil;
use Condistelec\MainBundle\Entity\Registro;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\Form\FormError;
use Symfony\Component\Form\Forms;
use JMS\SecurityExtraBundle\Annotation\Secure;

class UsuarioController extends Controller
{
	const CANT_MAX_ERRORES = 15;
	const CANT_MIN_ACIERTOS = 126;

	/**
	 * @Route("/usuario/home", name = "_cond_app_usr_home")
	 * @Secure(roles="ROLE_USER")
	 * @Template()
	 */
	public function homeAction()
	{
		return array();
	}
	
	/**
	 * @Route("/clave/{userMail}", name = "_cond_app_usr_clave")
	 * @Template()
	 */
	public function recuperarClaveAction($userMail)
	{
		$em = $this->getDoctrine()->getEntityManager();
		$usuario = $em->getRepository('CondistelecMainBundle:Usuario')->findOneBy(array('email' => $userMail));
		$existe = false;
		if($usuario != null) {
			$existe = true;
			$this->sendEmailRecuperacion($usuario);
		}
		return array('existe' => $existe);
	}
	
	public function sendEmailRecuperacion($usuario) 
    {
    	$message = \Swift_Message::newInstance()
        ->setSubject('Recuperar Clave | Condistelec')
        ->setFrom('no-reply@juegocondistelec.com.ar')
        ->setTo($usuario->getEmail())
        ->setBody($this->renderView(
                'CondistelecMainBundle:Usuario:claveEmail.txt.twig',
                array('nombre' => $usuario->getNombre(), 'usuario' => $usuario->getEmail(), 'password' => $usuario->getPassword())));
    	$this->get('mailer')->send($message);
    }
    

    /**
	 * @Route("/clave", name = "_cond_app_clave")
	 * @Template()
	 */
	public function claveAction()
	{
		return array('userName' => 'Juanito Perez', 'idUsuario' => 2);
	}
    
	/**
	 * @Route("/usuario/final", name = "_cond_app_usr_final")
	 * @Secure(roles="ROLE_USER")
	 * @Template()
	 */
	public function finalAction()
	{
		$user = $this->getUser();

		$em = $this->getDoctrine()->getEntityManager();

    	$partida = $em->getRepository('CondistelecMainBundle:Partida')->findOneBy(array('usuario' => $user->getId()));

    	$esGanador = $partida->getAciertos() >= UsuarioController::CANT_MIN_ACIERTOS && $partida->getIntentos() == 1;

        return array('esGanador' => $esGanador);
	}   

	 /**
     * @Route("/home", name="_condistelec_home")
     * @Template()
     */
    public function condistelecHomeAction() {
        return array();
    }

     /**
     * @Route("/usuario/reset", name="_condistelec_reset_partida")
     * @Secure(roles="ROLE_USER")
     * @Template()
     */
    public function resetPartidaAction() {
    	$user = $this->getUser();

		$em = $this->getDoctrine()->getEntityManager();

    	$partida = $em->getRepository('CondistelecMainBundle:Partida')->findOneBy(array('usuario' => $user->getId()));

    	$partida->setErrores(0);
    	$partida->setAciertos(0);
    	$partida->setIntentos($partida->getIntentos() + 1);
    	$partida->setTiempoAcum(0);
    	$partida->setSerieActual(1);

    	$em->persist($partida);
		$em->flush();

        return $this->redirect($this->generateUrl('_cond_app_usr_home'));
    }
}
